package rensoft.gwt.client.platform.json;

import com.google.gwt.json.client.JSONValue;

import java.util.Iterator;

import cs.java.json.JSONContainer;
import cs.java.json.JSONObject;
import cs.java.json.JSONType;
import cs.java.json.JsonObjectImplBase;




public class JSONObjectImpl extends JsonObjectImplBase implements JSONObject {

  private final com.google.gwt.json.client.JSONObject value;

  public JSONObjectImpl() {
    this(new com.google.gwt.json.client.JSONObject());
  }

  public JSONObjectImpl(com.google.gwt.json.client.JSONObject value) {
    super(value);
    this.value = value;
  }

  @Override
  public JSONContainer asContainer() {
    return this;
  }

  @Override
  public JSONObject asObject() {
    return this;
  }

  @Override
  public JSONType getImpl(String key) {
    return JSONImpl.create(value.get(key));
  }

  public int getSize() {
    return value.size();
  }

  public Iterator<String> iterator() {
    return value.keySet().iterator();
  }

  public void put(String key, JSONType type) {
    value.put(key, (JSONValue) type.getValue());
  }

  public String toJSON() {
    return value.toString();
  }
}
